0 CpxTRS
↳1 TrsToWeightedTrsProof (BOTH BOUNDS(ID, ID), 2 ms)
↳2 CpxWeightedTrs
↳3 TypeInferenceProof (BOTH BOUNDS(ID, ID), 0 ms)
↳4 CpxTypedWeightedTrs
↳5 CompletionProof (UPPER BOUND(ID), 0 ms)
↳6 CpxTypedWeightedCompleteTrs
↳7 NarrowingProof (BOTH BOUNDS(ID, ID), 0 ms)
↳8 CpxTypedWeightedCompleteTrs
↳9 CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID), 0 ms)
↳10 CpxRNTS
↳11 SimplificationProof (BOTH BOUNDS(ID, ID), 0 ms)
↳12 CpxRNTS
↳13 CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID), 0 ms)
↳14 CpxRNTS
↳15 IntTrsBoundProof (UPPER BOUND(ID), 262 ms)
↳16 CpxRNTS
↳17 IntTrsBoundProof (UPPER BOUND(ID), 112 ms)
↳18 CpxRNTS
↳19 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳20 CpxRNTS
↳21 IntTrsBoundProof (UPPER BOUND(ID), 386 ms)
↳22 CpxRNTS
↳23 IntTrsBoundProof (UPPER BOUND(ID), 80 ms)
↳24 CpxRNTS
↳25 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳26 CpxRNTS
↳27 IntTrsBoundProof (UPPER BOUND(ID), 887 ms)
↳28 CpxRNTS
↳29 IntTrsBoundProof (UPPER BOUND(ID), 394 ms)
↳30 CpxRNTS
↳31 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳32 CpxRNTS
↳33 IntTrsBoundProof (UPPER BOUND(ID), 148 ms)
↳34 CpxRNTS
↳35 IntTrsBoundProof (UPPER BOUND(ID), 29 ms)
↳36 CpxRNTS
↳37 FinalProof (⇔, 0 ms)
↳38 BOUNDS(1, n^1)
@(Cons(x, xs), ys) → Cons(x, @(xs, ys))
@(Nil, ys) → ys
game(p1, Cons(x', xs'), Cons(Capture, xs)) → game(Cons(x', p1), xs', xs)
game(p1, p2, Cons(Swap, xs)) → game(p2, p1, xs)
equal(Capture, Capture) → True
equal(Capture, Swap) → False
equal(Swap, Capture) → False
equal(Swap, Swap) → True
game(p1, p2, Nil) → @(p1, p2)
goal(p1, p2, moves) → game(p1, p2, moves)
@(Cons(x, xs), ys) → Cons(x, @(xs, ys)) [1]
@(Nil, ys) → ys [1]
game(p1, Cons(x', xs'), Cons(Capture, xs)) → game(Cons(x', p1), xs', xs) [1]
game(p1, p2, Cons(Swap, xs)) → game(p2, p1, xs) [1]
equal(Capture, Capture) → True [1]
equal(Capture, Swap) → False [1]
equal(Swap, Capture) → False [1]
equal(Swap, Swap) → True [1]
game(p1, p2, Nil) → @(p1, p2) [1]
goal(p1, p2, moves) → game(p1, p2, moves) [1]
@(Cons(x, xs), ys) → Cons(x, @(xs, ys)) [1]
@(Nil, ys) → ys [1]
game(p1, Cons(x', xs'), Cons(Capture, xs)) → game(Cons(x', p1), xs', xs) [1]
game(p1, p2, Cons(Swap, xs)) → game(p2, p1, xs) [1]
equal(Capture, Capture) → True [1]
equal(Capture, Swap) → False [1]
equal(Swap, Capture) → False [1]
equal(Swap, Swap) → True [1]
game(p1, p2, Nil) → @(p1, p2) [1]
goal(p1, p2, moves) → game(p1, p2, moves) [1]
@ :: Cons:Nil → Cons:Nil → Cons:Nil Cons :: Capture:Swap → Cons:Nil → Cons:Nil Nil :: Cons:Nil game :: Cons:Nil → Cons:Nil → Cons:Nil → Cons:Nil Capture :: Capture:Swap Swap :: Capture:Swap equal :: Capture:Swap → Capture:Swap → True:False True :: True:False False :: True:False goal :: Cons:Nil → Cons:Nil → Cons:Nil → Cons:Nil |
(a) The obligation is a constructor system where every type has a constant constructor,
(b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols:
@
game
equal
goal
Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules:
The TRS has the following type information:
Rewrite Strategy: INNERMOST |
Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules:
The TRS has the following type information:
Rewrite Strategy: INNERMOST |
Nil => 0
Capture => 0
Swap => 1
True => 1
False => 0
@(z, z') -{ 1 }→ ys :|: z' = ys, ys >= 0, z = 0
@(z, z') -{ 1 }→ 1 + x + @(xs, ys) :|: z = 1 + x + xs, xs >= 0, z' = ys, ys >= 0, x >= 0
equal(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
equal(z, z') -{ 1 }→ 1 :|: z = 1, z' = 1
equal(z, z') -{ 1 }→ 0 :|: z' = 1, z = 0
equal(z, z') -{ 1 }→ 0 :|: z = 1, z' = 0
game(z, z', z'') -{ 1 }→ game(p2, p1, xs) :|: xs >= 0, p1 >= 0, z' = p2, z = p1, z'' = 1 + 1 + xs, p2 >= 0
game(z, z', z'') -{ 1 }→ game(1 + x' + p1, xs', xs) :|: xs >= 0, p1 >= 0, z'' = 1 + 0 + xs, x' >= 0, xs' >= 0, z' = 1 + x' + xs', z = p1
game(z, z', z'') -{ 1 }→ @(p1, p2) :|: z'' = 0, p1 >= 0, z' = p2, z = p1, p2 >= 0
goal(z, z', z'') -{ 1 }→ game(p1, p2, moves) :|: p1 >= 0, z' = p2, z'' = moves, moves >= 0, z = p1, p2 >= 0
@(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
@(z, z') -{ 1 }→ 1 + x + @(xs, z') :|: z = 1 + x + xs, xs >= 0, z' >= 0, x >= 0
equal(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
equal(z, z') -{ 1 }→ 1 :|: z = 1, z' = 1
equal(z, z') -{ 1 }→ 0 :|: z' = 1, z = 0
equal(z, z') -{ 1 }→ 0 :|: z = 1, z' = 0
game(z, z', z'') -{ 1 }→ game(z', z, z'' - 2) :|: z'' - 2 >= 0, z >= 0, z' >= 0
game(z, z', z'') -{ 1 }→ game(1 + x' + z, xs', z'' - 1) :|: z'' - 1 >= 0, z >= 0, x' >= 0, xs' >= 0, z' = 1 + x' + xs'
game(z, z', z'') -{ 1 }→ @(z, z') :|: z'' = 0, z >= 0, z' >= 0
goal(z, z', z'') -{ 1 }→ game(z, z', z'') :|: z >= 0, z'' >= 0, z' >= 0
{ equal } { @ } { game } { goal } |
@(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
@(z, z') -{ 1 }→ 1 + x + @(xs, z') :|: z = 1 + x + xs, xs >= 0, z' >= 0, x >= 0
equal(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
equal(z, z') -{ 1 }→ 1 :|: z = 1, z' = 1
equal(z, z') -{ 1 }→ 0 :|: z' = 1, z = 0
equal(z, z') -{ 1 }→ 0 :|: z = 1, z' = 0
game(z, z', z'') -{ 1 }→ game(z', z, z'' - 2) :|: z'' - 2 >= 0, z >= 0, z' >= 0
game(z, z', z'') -{ 1 }→ game(1 + x' + z, xs', z'' - 1) :|: z'' - 1 >= 0, z >= 0, x' >= 0, xs' >= 0, z' = 1 + x' + xs'
game(z, z', z'') -{ 1 }→ @(z, z') :|: z'' = 0, z >= 0, z' >= 0
goal(z, z', z'') -{ 1 }→ game(z, z', z'') :|: z >= 0, z'' >= 0, z' >= 0
@(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
@(z, z') -{ 1 }→ 1 + x + @(xs, z') :|: z = 1 + x + xs, xs >= 0, z' >= 0, x >= 0
equal(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
equal(z, z') -{ 1 }→ 1 :|: z = 1, z' = 1
equal(z, z') -{ 1 }→ 0 :|: z' = 1, z = 0
equal(z, z') -{ 1 }→ 0 :|: z = 1, z' = 0
game(z, z', z'') -{ 1 }→ game(z', z, z'' - 2) :|: z'' - 2 >= 0, z >= 0, z' >= 0
game(z, z', z'') -{ 1 }→ game(1 + x' + z, xs', z'' - 1) :|: z'' - 1 >= 0, z >= 0, x' >= 0, xs' >= 0, z' = 1 + x' + xs'
game(z, z', z'') -{ 1 }→ @(z, z') :|: z'' = 0, z >= 0, z' >= 0
goal(z, z', z'') -{ 1 }→ game(z, z', z'') :|: z >= 0, z'' >= 0, z' >= 0
equal: runtime: ?, size: O(1) [1] |
@(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
@(z, z') -{ 1 }→ 1 + x + @(xs, z') :|: z = 1 + x + xs, xs >= 0, z' >= 0, x >= 0
equal(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
equal(z, z') -{ 1 }→ 1 :|: z = 1, z' = 1
equal(z, z') -{ 1 }→ 0 :|: z' = 1, z = 0
equal(z, z') -{ 1 }→ 0 :|: z = 1, z' = 0
game(z, z', z'') -{ 1 }→ game(z', z, z'' - 2) :|: z'' - 2 >= 0, z >= 0, z' >= 0
game(z, z', z'') -{ 1 }→ game(1 + x' + z, xs', z'' - 1) :|: z'' - 1 >= 0, z >= 0, x' >= 0, xs' >= 0, z' = 1 + x' + xs'
game(z, z', z'') -{ 1 }→ @(z, z') :|: z'' = 0, z >= 0, z' >= 0
goal(z, z', z'') -{ 1 }→ game(z, z', z'') :|: z >= 0, z'' >= 0, z' >= 0
equal: runtime: O(1) [1], size: O(1) [1] |
@(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
@(z, z') -{ 1 }→ 1 + x + @(xs, z') :|: z = 1 + x + xs, xs >= 0, z' >= 0, x >= 0
equal(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
equal(z, z') -{ 1 }→ 1 :|: z = 1, z' = 1
equal(z, z') -{ 1 }→ 0 :|: z' = 1, z = 0
equal(z, z') -{ 1 }→ 0 :|: z = 1, z' = 0
game(z, z', z'') -{ 1 }→ game(z', z, z'' - 2) :|: z'' - 2 >= 0, z >= 0, z' >= 0
game(z, z', z'') -{ 1 }→ game(1 + x' + z, xs', z'' - 1) :|: z'' - 1 >= 0, z >= 0, x' >= 0, xs' >= 0, z' = 1 + x' + xs'
game(z, z', z'') -{ 1 }→ @(z, z') :|: z'' = 0, z >= 0, z' >= 0
goal(z, z', z'') -{ 1 }→ game(z, z', z'') :|: z >= 0, z'' >= 0, z' >= 0
equal: runtime: O(1) [1], size: O(1) [1] |
@(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
@(z, z') -{ 1 }→ 1 + x + @(xs, z') :|: z = 1 + x + xs, xs >= 0, z' >= 0, x >= 0
equal(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
equal(z, z') -{ 1 }→ 1 :|: z = 1, z' = 1
equal(z, z') -{ 1 }→ 0 :|: z' = 1, z = 0
equal(z, z') -{ 1 }→ 0 :|: z = 1, z' = 0
game(z, z', z'') -{ 1 }→ game(z', z, z'' - 2) :|: z'' - 2 >= 0, z >= 0, z' >= 0
game(z, z', z'') -{ 1 }→ game(1 + x' + z, xs', z'' - 1) :|: z'' - 1 >= 0, z >= 0, x' >= 0, xs' >= 0, z' = 1 + x' + xs'
game(z, z', z'') -{ 1 }→ @(z, z') :|: z'' = 0, z >= 0, z' >= 0
goal(z, z', z'') -{ 1 }→ game(z, z', z'') :|: z >= 0, z'' >= 0, z' >= 0
equal: runtime: O(1) [1], size: O(1) [1] @: runtime: ?, size: O(n1) [z + z'] |
@(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
@(z, z') -{ 1 }→ 1 + x + @(xs, z') :|: z = 1 + x + xs, xs >= 0, z' >= 0, x >= 0
equal(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
equal(z, z') -{ 1 }→ 1 :|: z = 1, z' = 1
equal(z, z') -{ 1 }→ 0 :|: z' = 1, z = 0
equal(z, z') -{ 1 }→ 0 :|: z = 1, z' = 0
game(z, z', z'') -{ 1 }→ game(z', z, z'' - 2) :|: z'' - 2 >= 0, z >= 0, z' >= 0
game(z, z', z'') -{ 1 }→ game(1 + x' + z, xs', z'' - 1) :|: z'' - 1 >= 0, z >= 0, x' >= 0, xs' >= 0, z' = 1 + x' + xs'
game(z, z', z'') -{ 1 }→ @(z, z') :|: z'' = 0, z >= 0, z' >= 0
goal(z, z', z'') -{ 1 }→ game(z, z', z'') :|: z >= 0, z'' >= 0, z' >= 0
equal: runtime: O(1) [1], size: O(1) [1] @: runtime: O(n1) [1 + z], size: O(n1) [z + z'] |
@(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
@(z, z') -{ 2 + xs }→ 1 + x + s :|: s >= 0, s <= 1 * xs + 1 * z', z = 1 + x + xs, xs >= 0, z' >= 0, x >= 0
equal(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
equal(z, z') -{ 1 }→ 1 :|: z = 1, z' = 1
equal(z, z') -{ 1 }→ 0 :|: z' = 1, z = 0
equal(z, z') -{ 1 }→ 0 :|: z = 1, z' = 0
game(z, z', z'') -{ 2 + z }→ s' :|: s' >= 0, s' <= 1 * z + 1 * z', z'' = 0, z >= 0, z' >= 0
game(z, z', z'') -{ 1 }→ game(z', z, z'' - 2) :|: z'' - 2 >= 0, z >= 0, z' >= 0
game(z, z', z'') -{ 1 }→ game(1 + x' + z, xs', z'' - 1) :|: z'' - 1 >= 0, z >= 0, x' >= 0, xs' >= 0, z' = 1 + x' + xs'
goal(z, z', z'') -{ 1 }→ game(z, z', z'') :|: z >= 0, z'' >= 0, z' >= 0
equal: runtime: O(1) [1], size: O(1) [1] @: runtime: O(n1) [1 + z], size: O(n1) [z + z'] |
@(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
@(z, z') -{ 2 + xs }→ 1 + x + s :|: s >= 0, s <= 1 * xs + 1 * z', z = 1 + x + xs, xs >= 0, z' >= 0, x >= 0
equal(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
equal(z, z') -{ 1 }→ 1 :|: z = 1, z' = 1
equal(z, z') -{ 1 }→ 0 :|: z' = 1, z = 0
equal(z, z') -{ 1 }→ 0 :|: z = 1, z' = 0
game(z, z', z'') -{ 2 + z }→ s' :|: s' >= 0, s' <= 1 * z + 1 * z', z'' = 0, z >= 0, z' >= 0
game(z, z', z'') -{ 1 }→ game(z', z, z'' - 2) :|: z'' - 2 >= 0, z >= 0, z' >= 0
game(z, z', z'') -{ 1 }→ game(1 + x' + z, xs', z'' - 1) :|: z'' - 1 >= 0, z >= 0, x' >= 0, xs' >= 0, z' = 1 + x' + xs'
goal(z, z', z'') -{ 1 }→ game(z, z', z'') :|: z >= 0, z'' >= 0, z' >= 0
equal: runtime: O(1) [1], size: O(1) [1] @: runtime: O(n1) [1 + z], size: O(n1) [z + z'] game: runtime: ?, size: O(n1) [z + z'] |
@(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
@(z, z') -{ 2 + xs }→ 1 + x + s :|: s >= 0, s <= 1 * xs + 1 * z', z = 1 + x + xs, xs >= 0, z' >= 0, x >= 0
equal(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
equal(z, z') -{ 1 }→ 1 :|: z = 1, z' = 1
equal(z, z') -{ 1 }→ 0 :|: z' = 1, z = 0
equal(z, z') -{ 1 }→ 0 :|: z = 1, z' = 0
game(z, z', z'') -{ 2 + z }→ s' :|: s' >= 0, s' <= 1 * z + 1 * z', z'' = 0, z >= 0, z' >= 0
game(z, z', z'') -{ 1 }→ game(z', z, z'' - 2) :|: z'' - 2 >= 0, z >= 0, z' >= 0
game(z, z', z'') -{ 1 }→ game(1 + x' + z, xs', z'' - 1) :|: z'' - 1 >= 0, z >= 0, x' >= 0, xs' >= 0, z' = 1 + x' + xs'
goal(z, z', z'') -{ 1 }→ game(z, z', z'') :|: z >= 0, z'' >= 0, z' >= 0
equal: runtime: O(1) [1], size: O(1) [1] @: runtime: O(n1) [1 + z], size: O(n1) [z + z'] game: runtime: O(n1) [2 + z + z' + z''], size: O(n1) [z + z'] |
@(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
@(z, z') -{ 2 + xs }→ 1 + x + s :|: s >= 0, s <= 1 * xs + 1 * z', z = 1 + x + xs, xs >= 0, z' >= 0, x >= 0
equal(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
equal(z, z') -{ 1 }→ 1 :|: z = 1, z' = 1
equal(z, z') -{ 1 }→ 0 :|: z' = 1, z = 0
equal(z, z') -{ 1 }→ 0 :|: z = 1, z' = 0
game(z, z', z'') -{ 2 + z }→ s' :|: s' >= 0, s' <= 1 * z + 1 * z', z'' = 0, z >= 0, z' >= 0
game(z, z', z'') -{ 3 + x' + xs' + z + z'' }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + x' + z) + 1 * xs', z'' - 1 >= 0, z >= 0, x' >= 0, xs' >= 0, z' = 1 + x' + xs'
game(z, z', z'') -{ 1 + z + z' + z'' }→ s1 :|: s1 >= 0, s1 <= 1 * z' + 1 * z, z'' - 2 >= 0, z >= 0, z' >= 0
goal(z, z', z'') -{ 3 + z + z' + z'' }→ s2 :|: s2 >= 0, s2 <= 1 * z + 1 * z', z >= 0, z'' >= 0, z' >= 0
equal: runtime: O(1) [1], size: O(1) [1] @: runtime: O(n1) [1 + z], size: O(n1) [z + z'] game: runtime: O(n1) [2 + z + z' + z''], size: O(n1) [z + z'] |
@(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
@(z, z') -{ 2 + xs }→ 1 + x + s :|: s >= 0, s <= 1 * xs + 1 * z', z = 1 + x + xs, xs >= 0, z' >= 0, x >= 0
equal(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
equal(z, z') -{ 1 }→ 1 :|: z = 1, z' = 1
equal(z, z') -{ 1 }→ 0 :|: z' = 1, z = 0
equal(z, z') -{ 1 }→ 0 :|: z = 1, z' = 0
game(z, z', z'') -{ 2 + z }→ s' :|: s' >= 0, s' <= 1 * z + 1 * z', z'' = 0, z >= 0, z' >= 0
game(z, z', z'') -{ 3 + x' + xs' + z + z'' }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + x' + z) + 1 * xs', z'' - 1 >= 0, z >= 0, x' >= 0, xs' >= 0, z' = 1 + x' + xs'
game(z, z', z'') -{ 1 + z + z' + z'' }→ s1 :|: s1 >= 0, s1 <= 1 * z' + 1 * z, z'' - 2 >= 0, z >= 0, z' >= 0
goal(z, z', z'') -{ 3 + z + z' + z'' }→ s2 :|: s2 >= 0, s2 <= 1 * z + 1 * z', z >= 0, z'' >= 0, z' >= 0
equal: runtime: O(1) [1], size: O(1) [1] @: runtime: O(n1) [1 + z], size: O(n1) [z + z'] game: runtime: O(n1) [2 + z + z' + z''], size: O(n1) [z + z'] goal: runtime: ?, size: O(n1) [z + z'] |
@(z, z') -{ 1 }→ z' :|: z' >= 0, z = 0
@(z, z') -{ 2 + xs }→ 1 + x + s :|: s >= 0, s <= 1 * xs + 1 * z', z = 1 + x + xs, xs >= 0, z' >= 0, x >= 0
equal(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0
equal(z, z') -{ 1 }→ 1 :|: z = 1, z' = 1
equal(z, z') -{ 1 }→ 0 :|: z' = 1, z = 0
equal(z, z') -{ 1 }→ 0 :|: z = 1, z' = 0
game(z, z', z'') -{ 2 + z }→ s' :|: s' >= 0, s' <= 1 * z + 1 * z', z'' = 0, z >= 0, z' >= 0
game(z, z', z'') -{ 3 + x' + xs' + z + z'' }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + x' + z) + 1 * xs', z'' - 1 >= 0, z >= 0, x' >= 0, xs' >= 0, z' = 1 + x' + xs'
game(z, z', z'') -{ 1 + z + z' + z'' }→ s1 :|: s1 >= 0, s1 <= 1 * z' + 1 * z, z'' - 2 >= 0, z >= 0, z' >= 0
goal(z, z', z'') -{ 3 + z + z' + z'' }→ s2 :|: s2 >= 0, s2 <= 1 * z + 1 * z', z >= 0, z'' >= 0, z' >= 0
equal: runtime: O(1) [1], size: O(1) [1] @: runtime: O(n1) [1 + z], size: O(n1) [z + z'] game: runtime: O(n1) [2 + z + z' + z''], size: O(n1) [z + z'] goal: runtime: O(n1) [3 + z + z' + z''], size: O(n1) [z + z'] |